Stable Diffusion
概要
Diffusion」とは「拡散」という意味
hiroki.iconモデル、サンプラー、アップスケーラー...SD関連の全ての知識が簡潔にまとまってる
動作原理
画像にランダムで小さなノイズを繰り返し追加するプロセスのことで、以下の画像だと左から右に進める処理です。Stable Diffusionでは、さらにこの逆となる右から左、つまりノイズを画像に変換する処理も行います。
ニューラルネットワークが学習する関数f
ニュートラルネットワークが学習するのは関数f(x,t)で、これはxのノイズをわずかに除去し、t-1回目でどのように見えるかを生成するものです。
純粋なノイズをキレイな画像に変化させるには、この関数を何度も適用すればいいというわけです。Stable Diffusionの処理はいわばf(f(f(f(....f(N, T), T-1), T-2)..., 2, 1)というように、関数の入れ子状態になっています。このNは純粋なノイズ、Tはステップ数になります。
プロンプトによる関数fの制御
Stable Diffusionは、さらに関数の変数として文字列(プロンプト)を入力できます。プロンプトを入力することで、ノイズ除去の方向がある程度定まることになります。
関数fはコンテキストとしてプロンプト以外にも画像も扱えるから、img2imgみたいなことができる
ファインチューン
Textual Inversion
新しい概念を理解するための特別な単語を作成する
人や物を覚えさせるのに向いてる
学習時間がかかる
背景を塗りつぶしたりタグを修正したりなど学習データの準備の手間が多い
/icons/point.iconモデルそのものに概念を取り込むのではなく、学習した結果をモデルとは別ファイルに保存する形に進化した
着脱可能なので柔軟に変化させられる
embenddingsと言われている
Textual Inversionで学習した結果がembeddingsとして保存されている
hiroki.icon従来の機械学習でのembeddingsとは違った意味合いになっているから注意が必要
Hypernetwork
二次的なネットワークを使って、元のネットワークの新しい重みを予測する
画風を学習させるのに向いてる
学習時間短い
学習データの準備の手間も少ない
新しいコンセプトを理解できるまで、拡散モデル自体を微調整する
モデルの微調整を行う仕組み
拡散モデルにわずかな重みを追加し、変更されたモデルが概念を理解するまでそれらを訓練する
Low-rank Adaptation
LoRAを使用した画像生成にはAUTOMATIC1111を使用する
WebUI
InvokeAI
notebook
flat
Stable Diffusion WebUI Docker
float16,full,full-optの違い
float16
float32
画像生成するだけならこのどちらかを使えば良い
16でもそこまで差は出ないと思われる
full
full版はEMAが残ってるからDreamboothとかする
ema
exponential moving average
full-opt
追加学習向き
オプティマイザってのが残ってるから追加学習させるのに役立つ
参照
サンドボックスお試し
サ終
呪文まとめサイト
StableDiffusionで使用できるアーティスト、修飾みたいな知見がまとまっているnotion
質の良いプロンプトが売れる時代
https://youtu.be/aNdb_RUxtOM